{{tag>serveur réseau}}
------

====== Lighttpd : Un serveur web léger ======


{{ light_logo_170px.png}}

**Lighttpd** est un serveur web (//HTTP//) qui, de par sa légèreté, se veut rapide. Il supporte un grand nombre de fonctionnalités comparables à celles d'[[:apache2|Apache]] (comme les rewrite, fast-cgi, proxy, etc.) pour des performances aussi bonnes sinon meilleures dans les tests faits par Lighttpd.

Par rapport à Apache, il ne supporte pas les fichiers htaccess ou encore htpasswd. Ces 2 problèmes sont contournables si vous avez accès à la configuration de votre serveur.

Lighttpd se trouve dans le top 5 des serveurs les plus utilisés dans le monde. Cette page est là pour vous expliquer comment l'installer et comment l'utiliser de manière simple.

===== Installation =====

Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://lighttpd|lighttpd]]**.

===== Configuration =====
Tous les fichiers de configuration se trouvent dans **/etc/lighttpd**.
==== /etc/lighttpd ====
Voici ce que vous pouvez trouver dans ce répertoire.
  lighttpd.conf conf-available conf-enabled

  * Le fichier **lighttpd.conf** est le fichier de configuration principal à partir duquel les directives principales sont chargées.
  * **conf-available** est un dossier qui contient les fichiers de configuration des différents modules.
  * **conf-enabled** est un dossier 
===Le fichier lighttpd.conf===
Le plus important est de configurer la directive suivante qui définit la racine de Lighttpd.
<code>
server.document-root       = "/votre/chemin/"
</code>
Quelque soit la modification faite dans le fichier de configuration, il est possible de vérifier que la syntaxe est correcte avec la commande suivante:
  lighttpd -t -f /etc/lighttpd/lighttpd.conf

**/etc/lighttpd/lighttpd.conf** pouvant, bien sur, être remplacé par l'adresse de votre fichier de configuration.
==Les modules==
La première partie du fichier consiste en l'activation des différents modules du serveur. Pour activer un module, il suffit de décommenter sa ligne ou utiliser la commande **lighty-enable-mod** que nous verrons un plus loin.
<code>
server.modules              = (
            "mod_access",
            "mod_alias",
...
#           "mod_flv_streaming",
#           "mod_evasive"
)
</code>
Il est possible de retrouver un documentation détaillée des différents modules sur le wiki officiel de Lighttpd: [[http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#Modules]]

Une documentation plus exhaustive sur les différentes directives de configuration sont disponibles à l'adresse suivante:
[[http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions]]

==== PHP et MySQL ====

Nous allons mettre en place le langage PHP5 et configurer Lighttpd pour qu'il puisse l'interpréter.

[[:tutoriel:comment_installer_un_paquet|Installer le paquet]] [[apt://php5-cgi|php5-cgi]] et éventuellement [[apt://php5-gd|php5-gd]].

Exécutez la commande suivante pour activer le module fastcgi :
  sudo lighty-enable-mod fastcgi
  
Depuis  Ubuntu 10.10, il faut activer le module fastcgi-php pour que cela fonctionne (sous Ubuntu 10.04 sauter l'étape) :
  sudo lighty-enable-mod fastcgi-php
  
Puis rechargez la configuration de lighttpd:
  sudo /etc/init.d/lighttpd force-reload

Enfin, on teste que le serveur prend bien en compte PHP (nb: si vous avez changé le chemin de //server.document-root//, remplacez // /var/www/ // par le chemin que vous avez indiqué):    
  sudo sh -c 'echo "<?PHP phpinfo(); ?>" > /var/www/test.php'
  sudo chown -R www-data:www-data /var/www/test.php
  w3m http://localhost/test.php

Lors du test ci-dessus si vous rencontrez une **erreur 403**, ajoutez à la fin du fichier **/etc/php5/cgi/php.ini**  :
  cgi.fix_pathinfo = 1
(//source erreur 403// : [[http://www.ubuntugeek.com/lighttpd-webserver-setup-with-php5-and-mysql-support.html|ubuntugeek.com]])
<note tip>Si, sous **Ubuntu 11.10**, la correction du fichier /etc/php5/cgi/php.ini ne suffit pas
 <code> sudo nano /etc/lighttpd/lighttpd.conf </code>
et ajoutez-y
<code>fastcgi.server = ( ".php" => (( 
                     "bin-path" => "/path/to/php-cgi",
                     "socket" => "/tmp/php.socket" 
                 )))</code>
[[http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialLighttpdAndPHP#Configuration|Tutoriel pour Lighttpd et PHP (en)]] \\ 
FIXME                 
                 </note>
                 
                 
<note tip>Sous **Ubuntu 12.04** ajouter uniquement dans le fichier /etc/lighttpd/lighttpd.conf , au niveau des modules (ligne 7):
<code>
server.modules = (
                   "mod_fastcgi",
                 )
 </code>
 </note>
==== MySql ====
Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] suivants :
**[[apt://mysql-client,mysql-server,php5-mysql]]**
Et éventuellement PHPMyAdmin :
**[[apt://phpmyadmin|phpmyadmin]]**

Lors de l'installation, vous serez tout d'abord invité à indiquer à MySql qu'il fonctionnera avec Lighttpd.
Puis vous serez amenés à choisir un mot de passe pour l'accès root à phpmyadmin.

Après l'installation de ces paquets, il faut saisir les commandes suivantes :

  sudo lighty-enable-mod fastcgi userdir
  sudo /etc/init.d/mysql start
  sudo /etc/init.d/lighttpd restart


Si vous avez installé PHPMyAdmin, la base de données est alors accessible à l'adresse suivante : http://localhost/phpmyadmin


==== Ruby ====

Si ce n'est pas déjà fait, il faut commencer par installer l'environnement Ruby et le framework [[rubyonrails|Ruby on Rails]] si nécessaire :
<code>sudo apt-get install ruby1.8 rubygems1.8 libmysql-ruby1.8 librmagick-ruby1.8 libfcgi-ruby1.8 libopenssl-ruby1.8 rake
sudo gem install --no-rdoc --no-ri -v=2.3.4 rails</code>

L'étape suivante consiste à copier les fichiers de son application ruby dans un sous répertoire du serveur web.
\\ Par exemple /var/www/myapp.

Dernière étape, la configuration de lighttpd.
\\ Voici un fichier de configuration (qui fonctionne presque, il manque l'url rewriting...).

<code># /etc/lighttpd/conf-enabled/10-myapp.conf
## FastCGI programs have the same functionality as CGI programs,
## but are considerably faster through lower interpreter startup
## time and socketed communication
##
## Documentation: /usr/share/doc/lighttpd-doc/fastcgi.txt.gz
## http://www.lighttpd.net/documentation/fastcgi.html

alias.url += ( "/myapp" => "/var/www/myapp/public/" )
server.modules += ( "mod_rewrite" )

## Start an FastCGI server for ruby (needs the libfcgi-ruby package)
$HTTP["url"] =~ "^/myapp" {

        server.indexfiles = ( "dispatch.fcgi" )

        url.rewrite-once = (
                "^/(.*\..+(?!html))$" => "$0",
                "^/(.*)\.(.*)"        => "$0"
        )

        fastcgi.server += ( ".fcgi" =>
                ((
                        "bin-path" => "/var/www/myapp/public/dispatch.fcgi",
                        "socket" => "/tmp/rubyrails.socket",
                        "max-procs" => 2,
                        "idle-timeout" => 20,
                        "bin-environment" => (
                                "RAILS_ENV" => "production",
                                "RAILS_RELATIVE_URL_ROOT" => "/myapp",
                                "LANG" => "fr_FR.UTF-8"
                        )
                ))
        )
}</code>

==== SSL ====

Pour utiliser un certificat SSL, il faut au préalable installer les paquets suivants :
<code>sudo apt-get install openssl ssl-cert</code>

Pour créer un certificat SSL auto-signé, il est possible d'utiliser la commande suivante :
<code>sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/localhost.pem</code>

Une fois le certificat créé, il faut modifier la configuration du serveur pour qu'il accepte les connexions HTTPS sur le port 443.
\\ Pour ce faire, il faut [[:tutoriel:comment_modifier_un_fichier|éditer le fichier]] **/etc/lighttpd/lighttpd.conf** avec les droits d'administration pour y ajouter les 3 lignes suivantes.
<code>$SERVER["socket"] == ":443" {
  ssl.engine = "enable"
  ssl.pemfile = "/etc/ssl/private/localhost.pem" }</code>

Dernière étape, le redémarrage du serveur.
<code>sudo service lighttpd restart</code>

Ensuite rendez vous sur https://localhost/
\\ Étant donné que le certificat SSL est auto-signé, une alerte de sécurité sera générée par le navigateur.

<note>En cas de problème, ajouter //ssl.use-sslv2 = "enable"// en dessous de //ssl.engine = "enable"//.
\\ https://bugs.launchpad.net/ubuntu/+source/lighttpd/+bug/645002</note>

===== Désinstallation =====

Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez.

===== Voir aussi =====

  * **(en)** [[http://www.lighttpd.net/|Site officiel du projet Lighttpd]]
  * **(fr)** [[http://fr.wikipedia.org/wiki/Lighttpd|Lighttpd sur Wikipédia]]
  * **(en)** [[http://www.ubuntugeek.com/lighttpd-webserver-setup-with-php5-and-mysql-support.html|Configurer PHP5 pour Lighttpd]]
  * **(en)** [[http://nanotux.com/blog/the-ultimate-server/3/#l-php5| The ultimate server]]

----

//Contributeurs : [[utilisateurs:kagou|Patrice Vetsel]], [[utilisateurs:alteo_gange|alteo_gange]], [[utilisateurs:luigifab|luigifab]].//